--
-- 此文件要在所有sql文件之前执行
--

-- 生成随机字符串
CREATE OR REPLACE FUNCTION rand_string(p_length INTEGER)
    RETURNS TEXT
AS $$
    BEGIN
        RETURN SUBSTR(MD5(random()::text), 0, p_length + 1);
    END;
$$ LANGUAGE plpgsql;

-- 生成secret
CREATE OR REPLACE FUNCTION secret_string()
    RETURNS TEXT
AS $$
    BEGIN
        RETURN MD5(rand_string(32));
    END;
$$ LANGUAGE plpgsql;

-- 生成密码
CREATE OR REPLACE FUNCTION encrypt_password(p_password VARCHAR, p_secret VARCHAR)
    RETURNS TEXT
AS $$
    BEGIN
        RETURN MD5(p_password || '!ks#93a3JKSj2P&^%L=?' || p_secret);
    END;
$$ LANGUAGE plpgsql;

-- 生成后台管理员相关密码
CREATE OR REPLACE FUNCTION encrypt_password_admin(p_password VARCHAR, p_secret VARCHAR)
    RETURNS TEXT
AS $$
    BEGIN
        RETURN MD5(p_password || ';k0#6,aK8%GK2N&^#)3^' || p_secret);
    END;
$$ LANGUAGE plpgsql;
